#include "lpt.hpp"
#include "lpt_wget.hpp"
#include "lpt_pkobj.hpp"
#include "lpt_myapp.hpp"
void showhelp(){
    cout<<"\
################\t\t洛书包管理工具\t\t################\n\
简介：\n\
\t洛书软件包管理工具可以用来 安装/卸载/升级 洛书编程语言相关拓展包\n\
用法:\n\
\t\tlpt [参数]\n\
参数可选项:\n\
\thelp/帮助\t\t显示帮助信息\n\
\tlist/现有软件\t\t列出所有已安装拓展包的相关信息\n\
\tupdate/检查更新\t\t对所有已安装拓展包进行更新检查\n\
\tupgrade/全部更新\t\t对所有可更新的拓展包进行更新\n\
\tinstall/安装 [包名]\t\t安装/升级 指定包\n\
\tremove/卸载 [包名]\t\t卸载指定包\n";
}

int main(int argc,const char** argv){
    if(argc==1){
        cout<<"洛书软件包管理器\n您可以尝试使用 help/帮助 参数了解本软件的用法\n";
        return 0;
    }else{
        if((argc>2) &&(strcmp(argv[1], "install") == 0||strcmp(argv[1], "安装") == 0)){
            myapp app;
            app.install(argv[2]);
            return 0;
        }
        if((argc>2) &&(strcmp(argv[1], "remove") == 0||strcmp(argv[1], "卸载") == 0)){
            myapp app;
            app.remove(argv[2]);
            return 0;
        }
        if((argc>=2) &&(strcmp(argv[1], "list") == 0||strcmp(argv[1], "现有软件") == 0)){
            myapp app;
            app.showall();
            return 0;
        }
        if((argc>=2) &&(strcmp(argv[1], "update") == 0||strcmp(argv[1], "检查更新") == 0)){
            myapp app;
            app.checkupdate();
            app.showupdate();
            cout<<"您可以考虑命令 \"lpt 全部更新\"或\"lpt upgrade\"\n";
            return 0;
        }
        if((argc>=2) &&(strcmp(argv[1], "upgrade") == 0||strcmp(argv[1], "全部更新") == 0)){
            myapp app;
            app.updateall();
            return 0;
        }
        if((argc>=2) &&(strcmp(argv[1], "help") == 0||strcmp(argv[1], "帮助") == 0)){
            showhelp();
            return 0;
        }
    }
    cout<<"很遗憾，不明白您想执行什么操作\n您可以尝试使用 help/帮助 参数了解本软件的用法\n";
    return 0;
}   